package br.com.agenda.dao.impl;

import java.util.List;

import org.apache.tapestry5.hibernate.HibernateSessionManager;
import org.apache.tapestry5.services.ApplicationStateManager;
import org.hibernate.criterion.Restrictions;

import br.com.agenda.dao.ContatoDAO;
import br.com.agenda.entities.Contato;
import br.com.agenda.entities.Telefone;

public class ContatoDAOImpl extends GenericDAOImpl implements ContatoDAO{

	public ContatoDAOImpl(HibernateSessionManager hibernateSessionManager,ApplicationStateManager asm) {
		super(hibernateSessionManager, asm);
		// TODO Auto-generated constructor stub
	}

	public String gravarComTelefones(Contato contato, List<Telefone> telefones) {
		Contato c =null;
		if(contato.getId() == 0){
			c = findContatoByEmail(contato.getEmail());
		}

		if(c!=null){
			return "O contato de nome: "+c.getNome()+" Já está cadastrado com este e-mail "+c.getEmail();
		}
		else{
			saveOrUpdate(contato);
			if(telefones !=null && telefones.size()>0){
				for (Telefone telefone : telefones) {
					telefone.setContato(contato);
					saveOrUpdate(telefone);
				}
			}
			return null;
		}
	}

	public Contato findContatoByEmail(String email) {
		return  (Contato) this.hsm.getSession().createCriteria(Contato.class).add(Restrictions.eq("email", email)).uniqueResult();

	}

}
